﻿
namespace Anycmd.AC
{
    using System;

    /// <summary>
    /// 工作组。
    /// 一个组是一个地图，整个森林中的树木是一个集合，树木类型的一个组是一张记录树木位置的坐标图，图上的树木是整个森林的一个子集。
    /// 用户绘制一张记录树木的位置的坐标图，然后可以把这张图交给某个工人，从而工人按图索骥去伐木。
    /// 不在图上的树木可能是不允许砍伐的。
    /// <remarks>
    /// 不添加岗位模型，岗位是一种有组织结构的工作组。可以为岗位授权，既然岗位是工作组，
    /// 那么自动已经可以授权。不添加专门的职务模型。职务是字典，通过系统字典表现职务。
    /// </remarks>
    /// </summary>
    public interface IGroup
    {
        /// <summary>
        /// 
        /// </summary>
        Guid Id { get; }
        /// <summary>
        /// 工作组所属组织结构，如果该属性有指向组织结构的值的话该工作组就是岗位。岗位下的账户只来自这个组织结构和其子组织结构。
        /// <remarks>
        /// 工作组是跨组织结构的资源组。工作组是不应该绑定到具体组织结构的，“岗位”是一种绑定到具体组织结构的资源组，而这里的OrganizationCode属性就是用来把工作组绑定到具体的组织结构从而成为“岗位”。
        /// </remarks>
        /// </summary>
        string OrganizationCode { get; }
        /// <summary>
        /// 
        /// </summary>
        string Name { get; }

        string CategoryCode { get; }

        int SortCode { get; }

        int IsEnabled { get; }
    }
}
